// 修正 uni.getStorage 的调用方式
function getToken() {
	return new Promise((resolve, reject) => {
		uni.getStorage({
			key: 'user_token',
			success: function(res) {
				
				resolve(res);
			},
			fail: function(err) {
				console.log('获取 token 失败,请登录', err);
				uni.navigateTo({
					url: '/pacakgeBase/pages/login/login'
				});
				reject(err);
			}
		});
	});
}

function getH5Token() {
	return new Promise((resolve, reject) => {
		try {
			// 使用 localStorage.getItem 获取 user_token
			const token = localStorage.getItem("user_token");
			if (token) {
				console.log('获取 H5token', token);
				// 成功获取到 token 时，将其传递给 resolve
				resolve(token);
			} else {
				// 未获取到 token 时，创建一个错误对象并传递给 reject
				const error = new Error('未找到 user_token');
				console.log('获取 token 失败', error);
				reject(error);
			}
		} catch (err) {
			// 处理 localStorage 操作过程中可能出现的异常
			console.log('获取 token 失败', err);
			reject(err);
		}
	});
}

function setToken(token) {
	return new Promise((resolve, reject) => {
		uni.setStorage({
			key: 'user_token',
			data: token,
			success: function(res) {
				console.log('数据存储成功', res);
				resolve(res);
			},
			fail: function(err) {
				console.error('数据存储失败', err);
				reject(err);
			}
		});
	});
}


// 用户信息

function getUserData() {
	return new Promise((resolve, reject) => {
		uni.getStorage({
			key: 'user',
			success: function(res) {
				console.log('获取 user', res);
				resolve(res);
			},
			fail: function(err) {
				console.log('获取 user 失败', err);
				uni.navigateTo({
					url: '/pacakgeBase/pages/login/login'
				});
				reject(err);
			}
		});
	});
}

function getH5ShopData() {
	return new Promise((resolve, reject) => {
		try {
			// 使用 localStorage.getItem 获取 user_token
			const shop = localStorage.getItem("shop");
			if (shop) {
				console.log('获取HHH shop', shop);
				// 成功获取到 token 时，将其传递给 resolve
				resolve(shop);
			} else {
				// 未获取到 token 时，创建一个错误对象并传递给 reject
				const error = new Error('未找到 shop');
				console.log('获取HHH shop 失败', error);
				uni.navigateTo({
					url: '/pacakgeBase/login/login'
				});
				reject(error);
			}
		} catch (err) {
			// 处理 localStorage 操作过程中可能出现的异常
			console.log('获取 shop 失败', err);
			reject(err);
		}
	});
}

function setUserData(data) {
	return new Promise((resolve, reject) => {
		uni.setStorage({
			key: 'user',
			data: data,
			success: function(res) {
				console.log('user数据存储成功', res);
				resolve(res);
			},
			fail: function(err) {
				console.error('shop数据存储失败', err);
				reject(err);
			}
		});
	});
}


function get(key) {
	return new Promise((resolve, reject) => {
		uni.getStorage({
			key: key,
			success: function(res) {
				resolve(res.data);
			},
			fail: function(err) {
				console.log('获取失败', err);
				reject(err);
			}
		});
	});
}

function set(key, value) {
	return new Promise((resolve, reject) => {
		uni.setStorage({
			key: key,
			data: value,
			success: function(res) {
				console.log('数据存储成功');
				resolve(res);
			},
			fail: function(err) {
				console.error('数据存储失败', err);
				reject(err);
			}
		});
	});
}

function clear(key) {
	return new Promise((resolve, reject) => {
		uni.removeStorage({
			key: key,
			success: function(res) {
				console.log('Token 数据已清除');
				set(key, null).then((res) => {
					console.log("重置完成", res);
				})
				resolve(res);
			},
			fail: function(err) {
				console.error('清除 Token 数据失败', err);
				reject(err);
			}
		});
	});
}

function clearToken() {
	return new Promise((resolve, reject) => {
		wx.removeStorage({
			key: 'user_token',
			success: function(res) {
				console.log('Token 数据已清除');
				setToken(null).then((res) => {
					console.log("重置完成", res);
				})
				resolve(res);
			},
			fail: function(err) {
				console.error('清除 Token 数据失败', err);
				reject(err);
			}
		});
	});
}


//导出所有方法
module.exports = {
	getToken,
	setToken,
	getH5Token,
	clearToken,
	set,
	get,

	setUserData,
	getUserData
	
};